---
title: 基本数据类型
---


## 变量与关键字
变量是 Python 程序用来保存计算结果的存储单元，为了方便访问这块存储单元，Python 给这块存储单元命名，该名称即为变量名，在 Python 中通过变量名来访问保存计算结果的存储单元。

在下图中，在内存中有一块存储区域保存了计算结果 123，在 Python 程序中使用变量 i 表示这一块存储区域，如下所示：

<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241128221734.png"/>


变量的值是可以变化的，在下图中，将变量 i 修改为 456，如下所示：

<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241128221822.png"/>
```python
# 在内存中声明一个变量 i，并将其赋值为 123
i =  123
print(i);
i = 456
print(i)
```

<RedSpan>变量名由字母、数字、下划线组成</RedSpan>。

合法的变量名称如下：
* abc
* ABC
* abc123
* abc_xyz
* abc__xyz，该命名包含了2根下划线
* __init__，该命名包含了2根下划线
不合法的变量名称如下：

* `a$bc`，该命名包含了字符`$`
* ab/c，该命名包含了字符/


<RedSpan>变量名不能以数字开头、不能以 python 中的关键字命名。</RedSpan>

导入并打印 python 中的关键字。

```python
import keyword
print(keyword.kwlist)

# 输出 Python 预设的关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```

## 代码缩进
Python 语言要求在需要表达代码层次关系的场景中，必须使用缩进。如果不使用缩进，程序运行时则会报告错误。

```python title='这个 python 语句没有使用缩进，所以报错了'
if 2 > 1:
print('2 > 1 is true')
```
## 输入与输出

Python 提供了 input 语句用于读取键盘输入，input 语句读取用户输入的一行文本。
```python
line = input("请输入：")  # 使用 input 语句读取用户输入的一行文本，将该文本保存到变量 line 中。
print("你输入的内容为：",line) # 打印文本
```
在 python 中使用 print 语句向屏幕上输出。


```python title='单行打印与多行打印'
# 单行打印
print("Hello World")

# 多行打印，打印出来的效果分为多行 \n 代表回车键
print("Hello \nWorld")

### 多行文本
print("""
Hello World
你好，世界
""")
```


```python title='打印单引号和双引号'
print("'")

print("'")

# 或者使用转义字符 , 用 \ 开头。
print("\"")
```
## 基本数据类型
Python 中有 7 种类型的数据：
* 数值
* 字符串
* 布尔值
* 列表
* 元组
* 字典
* 集合

### 数值
可以表示整数、浮点数、复数，用于数值计算的场合。

```python title='整数运算'
a = 1+1
```

```python title='整数运算'
a = 1.1 + 1.1
```
```python title='复数运算'
x = 1 + 2j
y = 3+ 4j
print(x + y)

# 输出： 4+6j
```
### 字符串

字符串类型的数据表示一段文本，使用单引号、双引号创建

* 单引号字符串 'hello'
* 双引号字符串 "hello"

字符串通常用于文本的连接

```python title='连接两个字符串，形成一个新的字符串'
a = 'Hello'+'World'
print(a)
```

```python title='连接三个字符串，形成一个新的字符串'
a = 'Hello'+':'+'World'
print(a)
```

### 布尔值

布尔值类型的数据表示逻辑运算结果，有两种取值：
* 真，使用 True 关键字表示。
* 假，使用 False 关键字表示。

布尔值通常用于逻辑运算的场合，例如：

```python title='表示比较运算的结果'
flag = 2>1
print(flag)
flag = 2<1
print(flag)
```

```python title='用于条件判断'
if 2 > 1:
    print('2 > 1 is True')
else:
    print('2 > 1 is False')
```
### 列表
列表是一个有序的序列，列表中所有的元素放在 [] 中间，并用逗号分开

* `[1, 2, 3]`，一个包含 3 个整数的列表
* [‘a’, ‘b’, ‘c’]，一个包含 3 个字符串的列表

列表中的元素是顺序排列的，可以通过索引(就是元素的顺序，从 0 开始)访问列表的元素。

```python
list = [1,2,3] # 声明并创建一个 list 变量。
print(list)
print(list[0])
print(list[1])
print(list[2])
```
### 元组
元组是一个有序的序列，元组中所有的元素放在 () 中间，并用逗号分开，例如：

* (1, 2, 3)，一个包含 3 个整数的元组
* (‘a’, ‘b’, ‘c’)，一个包含 3 个字符串的元组

元组中的元素是顺序排列的，可以通过索引访问元组的元素，例如：

```python
tuple = (1, 2, 3)
print(tuple[0])
print(tuple[1])
print(tuple[2])
```

<RedSpan>元组与列表的区别在于：列表创建后可以修改，元组创建后不可以修改。</RedSpan>

### 字典
字典由键和对应值成对组成，字典中所有的键值对放在 {} 中间，每一对键值之间用逗号分开，例如：

`{'a':'A','b':'B','c':'C'}`

* 字典中包含3个键值对
* 键 ‘a’ 的值是 ‘A’
* 键 ‘b’ 的值是 ‘B’
* 键 ‘c’ 的值是 ‘C’

`{1:100, 2: 200, 3:300}`

* 字典中包含3个键值对
* 键 1 的值是 100
* 键 2 的值是 200
* 键 3 的值是 300

字典通常用于描述对象的各种属性，例如一本书，有书名、作者名、出版社等各种属性，可以使用字典描述如下：

```python
book = {'title': 'Python 入门基础', 'author': '张三', 'press': '机械工业出版社'}
print(book)
print(book['title'])
print(book['author'])
print(book['press'])
```
### 集合

集合是一个无序、不重复的序列，集合中所有的元素放在 {} 中间，并用逗号分开，例如：

* `{1, 2, 3}`，一个包含 3 个整数的列表
* `{‘a’, ‘b’, ‘c’}`，一个包含 3 个字符串的列表

集合提供的最基本的操作有：

1. 使用 in 关键字检查元素是否在集合中
2. 向集合中增加元素
3. 向集合中增加元素

```python
x = {'a', 'b', 'c'}
print('b' in x)  # True
print('d' in x)  # False
x.add('d')
print(x)

x.remove('c')
print(x)
```